`timescale 1ns/1ps
// 计数器模块（DUT）
`include "counter_props.sv"
module counter (
    input  logic       clk,    // 时钟
    input  logic       rst_n,  // 异步复位（低有效）
    input  logic       en,     // 使能信号
    output logic [3:0] cnt,    // 计数值（4位）
    output logic       ovf     // 溢出标志（计数到15时拉高）
);

always_ff @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
        cnt <= 4'h0;
        ovf <= 1'b0;
    end else if (en) begin
        if (cnt == 4'hF) begin
            cnt <= 4'h0;
            ovf <= 1'b1;
        end else begin
            cnt <= cnt + 1'b1;
            ovf <= 1'b0;
        end
    end
end

counter_props props(.*);

endmodule